import pymysql


class DBUtil:
    #定义类属性
    conn = None
    #定义数据库连接方法
    #定义成私有方法，不用让第三方调用，没必要的数据

    @classmethod
    def __connect_db(cls):
        cls.conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="iHRM_student_2022",
                                   database="ihrm", charset="utf8")
        return cls.conn

    #定义数据库关闭方法：
    @classmethod
    def __close_db(cls):
        cls.conn.close()

    #数据库的查询操作
    #加上装饰器是为了调用方 调用方便，直接类名.方法名，就可以了
    @classmethod
    def query_db(cls,sql):

        cursor=None
        result=None
        try:
            # 创建数据库连接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql语句，返回结果
            cursor.execute(sql)
            result = cursor.fetchone()
        except Exception as err:
            print("数据库的查询操作:", err)
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_db()
            return result






    @classmethod
    def UID(cls,sql):   # u-修改，I-增加，D-删除
        cursor=None
        try:
            # 创建数据库连接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql语句，打印影响的数据
            cursor.execute(sql)
            affect_rows = cls.conn.affected_rows()
            print("影响数据的行数:", affect_rows)
            # 事务的提交、回滚
            cls.conn.commit()
        except Exception as err:
            print("增删改数据的影响:", err)
            cls.conn.rollback()
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_db()




if __name__ == '__main__':
    DBUtil.UID("insert into t_book (id,title,pub_date) values (1011,'呵呵呵','2018-5-11');")

